/**
 * File Name   : QueryDao.java
 * Description : 
 */
package feng.process.dao;

import java.sql.SQLException;
import java.util.List;

import org.apache.log4j.Logger;

import com.ibatis.sqlmap.client.SqlMapClient;

/**
 * Ibatis方式查询使用Dao
 * @author 冯昌硕
 * @create 2012-10-25 上午12:41:30
 */
public class QueryDao {

    private static final Logger log = Logger.getLogger(QueryDao.class);

    private SqlMapClient sqlMapClient = SQLMapClientFactory.getSqlMapClient();

    /**
     * 功能：根据SQL ID查询单条记录 适用于没有查询条件的或者无参数的SQL语句
     * 
     * @param sqlId 要查询的SQLID
     * @return 查询结果，如果查询不到或者查询失败，则返回空
     * @create 2012-7-1 下午10:50:52
     */
    public Object queryForObject(String sqlId) {
        Object result = null;

        try {
            result = sqlMapClient.queryForObject(sqlId);
        } catch (SQLException e) {
            log.error("SQL:[" + sqlId + "] 查询异常：" + e.toString());
            e.printStackTrace();
        }

        return result;
    }

    /**
     * 功能：根据SQLID和指定的参数查询单条记录
     * 
     * @param sqlId 要查询的SQLID
     * @param parameterObject 查询参数
     * @return 查询结果，如果查询不到或者查询失败，则返回空
     * @create 2012-7-1 下午10:56:18
     */
    public Object queryForObject(String sqlId, Object parameterObject) {
        Object result = null;

        try {
            result = sqlMapClient.queryForObject(sqlId, parameterObject);
        } catch (SQLException e) {
            log.error("[queryForObject] SQL:[" + sqlId + "](参数：[" + parameterObject + "]) 查询异常：" + e.toString());
            e.printStackTrace();
        }

        return result;
    }

    /**
     * 根据sqlId查询指定参数条件下的多条记录
     * @param sqlId
     * @param parameterObj 查询参数
     * @return 查询结果集
     * @create 2012-10-29 下午8:23:53
     */
    public List<?> queryForList(String sqlId, Object parameterObj) {
        List<?> resultLst = null;

        try {
            resultLst = sqlMapClient.queryForList(sqlId, parameterObj);
        } catch (SQLException e) {
            log.error("[queryForList] SQL:[" + sqlId + "](参数：[" + parameterObj + "]) 查询异常：" + e.toString());
            e.printStackTrace();
        }
        
        return resultLst;
    }

}
